SQLAlchemy একটি শক্তিশালী এবং জনপ্রিয় Python ORM (Object Relational Mapper) লাইব্রেরি যা আপনাকে ডাটাবেসের সাথে সহজে কাজ করতে সাহায্য করে। SQLAlchemy বিভিন্ন ধরনের ডাটাবেসের সাথে কাজ করতে পারে, যেমন PostgreSQL, MySQL, এবং SQLite। এই টিউটোরিয়ালে, আমরা PostgreSQL, MySQL, এবং SQLite এর সাথে SQLAlchemy ইন্টিগ্রেশন কিভাবে করতে হয় তা দেখবো।
SQLAlchemy ইনস্টলেশন
প্রথমে, SQLAlchemy ইনস্টল করতে হবে। নিচের কমান্ডটি ব্যবহার করে এটি ইনস্টল করতে পারেন:
pip install sqlalchemy
এছাড়া, ডাটাবেসের জন্য ড্রাইভারও ইনস্টল করতে হবে। এখানে PostgreSQL, MySQL, এবং SQLite এর জন্য প্রয়োজনীয় ড্রাইভারগুলোর ইনস্টলেশন দেখানো হলো:
PostgreSQL:
pip install psycopg2MySQL:
pip install pymysql- SQLite: SQLite ড্রাইভার আলাদা করে ইনস্টল করার প্রয়োজন নেই, কারণ এটি Python এর সাথে ডিফল্টভাবে আসে।
PostgreSQL, MySQL, এবং SQLite এর সাথে SQLAlchemy কনফিগারেশন
SQLAlchemy এর সাথে ডাটাবেস ইন্টিগ্রেট করার জন্য, প্রথমে একটি engine তৈরি করতে হয় যা ডাটাবেসের সাথে সংযোগ স্থাপন করবে।
1. PostgreSQL এর সাথে SQLAlchemy Integration
PostgreSQL ডাটাবেসে সংযোগ করার জন্য নিচের কোডটি ব্যবহার করতে পারেন:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# PostgreSQL ডাটাবেস URL
DATABASE_URL = "postgresql+psycopg2://username:password@localhost/dbname"
# SQLAlchemy engine তৈরি করা
engine = create_engine(DATABASE_URL)
# Base class তৈরি করা
Base = declarative_base()
# Session তৈরি করা
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# ডাটাবেসে সংযোগ করা
session = SessionLocal()
এখানে DATABASE_URL এর মধ্যে আপনার PostgreSQL ডাটাবেসের ইউজারনেম, পাসওয়ার্ড, হোস্ট এবং ডাটাবেসের নাম দিতে হবে।
2. MySQL এর সাথে SQLAlchemy Integration
MySQL ডাটাবেসের জন্য SQLAlchemy কনফিগারেশন কিছুটা আলাদা হবে। নিচে একটি উদাহরণ দেওয়া হলো:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# MySQL ডাটাবেস URL
DATABASE_URL = "mysql+pymysql://username:password@localhost/dbname"
# SQLAlchemy engine তৈরি করা
engine = create_engine(DATABASE_URL)
# Base class তৈরি করা
Base = declarative_base()
# Session তৈরি করা
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# ডাটাবেসে সংযোগ করা
session = SessionLocal()
এখানে DATABASE_URL এর মধ্যে আপনার MySQL ডাটাবেসের ইউজারনেম, পাসওয়ার্ড, হোস্ট এবং ডাটাবেসের নাম দিতে হবে।
3. SQLite এর সাথে SQLAlchemy Integration
SQLite ডাটাবেসের জন্য কনফিগারেশন সবচেয়ে সহজ। নিচে SQLite ব্যবহার করে SQLAlchemy কনফিগারেশন দেখানো হলো:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# SQLite ডাটাবেস URL
DATABASE_URL = "sqlite:///./test.db"
# SQLAlchemy engine তৈরি করা
engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})
# Base class তৈরি করা
Base = declarative_base()
# Session তৈরি করা
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# ডাটাবেসে সংযোগ করা
session = SessionLocal()
এখানে DATABASE_URL এর মধ্যে SQLite ডাটাবেস ফাইলের পাথ দিতে হবে। যেমন, "sqlite:///./test.db" যেখানে ./test.db হলো ডাটাবেস ফাইলের লোকেশন।
ডাটাবেস মডেল তৈরি করা
SQLAlchemy ব্যবহার করে ডাটাবেসের টেবিল মডেল তৈরি করতে, Base ক্লাস থেকে একটি ক্লাস তৈরি করতে হয়। নিচে একটি সাধারণ মডেল উদাহরণ দেওয়া হলো:
from sqlalchemy import Column, Integer, String
# User টেবিলের মডেল
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
email = Column(String, unique=True, index=True)
এখানে User ক্লাসটি একটি টেবিলের মডেল। Base ক্লাস থেকে এর উত্তরাধিকার লাভ হয়েছে এবং __tablename__ অ্যাট্রিবিউট দিয়ে টেবিলের নাম নির্ধারণ করা হয়েছে।
ডাটাবেসে টেবিল তৈরি করা
SQLAlchemy ORM ব্যবহার করে ডাটাবেসে টেবিল তৈরি করতে, Base.metadata.create_all() মেথড ব্যবহার করতে হয়:
# ডাটাবেসে টেবিল তৈরি করা
Base.metadata.create_all(bind=engine)
এটি User ক্লাসের মাধ্যমে টেবিল তৈরি করবে।
ডাটা ইনসার্ট এবং রিট্রিভ করা
SQLAlchemy ব্যবহার করে ডাটাবেসে ডাটা ইনসার্ট এবং রিট্রিভ করা যায়। নিচে ইনসার্ট এবং রিট্রিভের উদাহরণ দেওয়া হলো:
1. ইনসার্ট
# নতুন ইউজার তৈরি করা
new_user = User(name="John Doe", email="johndoe@example.com")
# ডাটাবেসে নতুন ইউজার ইনসার্ট করা
session.add(new_user)
session.commit()
2. রিট্রিভ
# ইউজার রিট্রিভ করা
user = session.query(User).filter(User.email == "johndoe@example.com").first()
print(user.name)
এখানে আমরা User ক্লাসের মাধ্যমে ডাটাবেস থেকে একটি ইউজারকে রিট্রিভ করেছি।
সারাংশ
SQLAlchemy একটি শক্তিশালী Python ORM যা PostgreSQL, MySQL, এবং SQLite সহ বিভিন্ন ডাটাবেসে কাজ করতে সহায়তা করে। ডাটাবেসের সঙ্গে সংযোগ স্থাপন, টেবিল তৈরি, ডাটা ইনসার্ট এবং রিট্রিভ করা সহজেই করা যায় SQLAlchemy এর মাধ্যমে। এই টিউটোরিয়ালে আমরা PostgreSQL, MySQL এবং SQLite এর সাথে SQLAlchemy এর ইন্টিগ্রেশন কিভাবে করা যায় তা বিস্তারিতভাবে আলোচনা করেছি।
Read more